﻿using BCCommon;
using BCDto.MakeStaticPagingComponent.TemplateTag;
using System;
using System.Collections.Generic;
using System.Text;

namespace BCService.MakeStaticPagingComponent.TemplateTagService
{
    /// <summary>
    /// 模板标签相关服务
    /// </summary>
    /// <returns></returns>
    public interface ITemplateTagService
    {
        /// <summary>
        /// 新增加一个模板标签信息
        /// </summary>
        /// <param name="templateTagRequestDto">模板标签信息</param>
        /// <returns></returns>
        TemplateTagDto Add(TemplateTagRequestDto templateTagRequestDto);
        /// <summary>
        /// 新增加一个模板标签信息
        /// </summary>
        /// <param name="templateTagId">模板标签Id</param>
        /// <param name="templateTagRequestDto">模板标签信息</param>
        /// <returns></returns>
        TemplateTagDto Update(long templateTagId, TemplateTagRequestDto templateTagRequestDto);
        /// <summary>
        /// 获取模板标记名称
        /// </summary>
        /// <returns></returns>
        IEnumerable<string> GetTemplateTagName();
        /// <summary>
        /// 获取标签名称及标签说明列表
        /// </summary>
        /// <returns></returns>
        IEnumerable<object> GetTagNameAndTagDescription();
        /// <summary>
        /// 获取模板标记
        /// </summary>
        /// <param name="tagName">标记名称</param>
        /// <returns></returns>
        TemplateTagDto Get(string tagName);
        /// <summary>
        /// 获取模板标记
        /// </summary>
        /// <param name="templateTagId">模板标记Id</param>
        /// <returns></returns>
        TemplateTagDto Get(long templateTagId);
        /// <summary>
        /// 获取模板标记列表
        /// </summary>
        /// <returns></returns>
        IEnumerable<TemplateTagDto> Get();
        /// <summary>
        /// 获取模板标记列表
        /// </summary>
        /// <param name="tagName">标签名称</param>
        /// <param name="tagDescription">标签描述</param>
        /// <param name="start">开始时间</param>
        /// <param name="end">结束时间</param>
        /// <param name="sortField">排序字段</param>
        /// <param name="ascending">排序</param>
        /// <param name="index">当前页码</param>
        /// <param name="size">每页数据条数</param>
        /// <returns></returns>
        PageableList<TemplateTagDto> Query(string tagName, string tagDescription, DateTime? start, DateTime? end, string sortField, bool? ascending, int index, int size);
        /// <summary>
        /// 删除模板标记信息
        /// </summary>
        /// <param name="templateTagId">模板标记Id</param>
        void Delete(long templateTagId);
    }
}
